﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 练习02
{
    class Program
    {
        static void Main(string[] args)
        {
            //// 求出1~1000之间的所有能被7整除的数，并计算和输出每5个的和。
            //int sum = 0;
            //int index = 0;  // 让我们知道是第几个能被7整除的数
            //for (int i = 1; i <= 1000; i++)
            //{
            //    if (i % 7 == 0)
            //    {
            //        Console.WriteLine(i);
            //        index++;
            //        sum += i;
            //    }
            //    if (index == 5)
            //    {
            //        index = 0;
            //        Console.WriteLine(sum);
            //        sum = 0;
            //    }
            //}


            // 兔子繁殖问题。设有一对新生的兔子，从第三个月开始他们每个月都生一对兔子，
            // 新生的兔子从第三个月开始又每个月生一对兔子。
            // 按此规律，并假定兔子没有死亡，2个月后共有多少个兔子？要求编写为控制台程序

            // 1    2   3   4   5   6   7   8
            // 1    1   2   3   5   8   13  21
            //while (true)
            //{
            //    Console.Write("输入月份：");
            //    int n = int.Parse(Console.ReadLine());
            //    int temp = 1;   //兔子总数
            //    int sum2 = 1;
            //    int sum1 = 1;

            //    for (int i = 3; i <= n; i++)
            //    {
            //        temp = sum2 + sum1;
            //        sum2 = sum1;
            //        sum1 = temp;
            //    }
            //    Console.WriteLine(temp);
            //}

            // 编程输出1000以内的所有素数
            //Console.WriteLine(2);
            //Console.WriteLine(3);
            //for (int i = 2; i <= 1000; i++)
            //{
            //    for (int j = 2; j <= i / 2; j++)
            //    {
            //        if (i % j == 0)
            //        {
            //            break;
            //        }
            //        if (j == i / 2)
            //        {
            //            Console.WriteLine(i);
            //        }
            //    }
            //}

            // 2.假设它是素数


            //编写一个掷筛子100次的程序，并打印出各种点数的出现次数
            //Random rd = new Random();
            //int num = 0;
            //int num1 = 0, num2 = 0, num3 = 0, num4 = 0, num5 = 0, num6 = 0;
            //for (int i = 0; i < 100; i++)
            //{
            //    num = rd.Next(1, 7); //[1,7)
            //    switch (num)
            //    {
            //        case 1:
            //            num1++;
            //            break;
            //        case 2:
            //            num2++;
            //            break;
            //        case 3:
            //            num3++;
            //            break;
            //        case 4:
            //            num4++;
            //            break;
            //        case 5:
            //            num5++;
            //            break;
            //        case 6:
            //            num6++;
            //            break;
            //        default:
            //            break;
            //    }
            //}
            //Console.WriteLine("1掷了{0}次",num1);
            //Console.WriteLine("2掷了{0}次", num2);
            //Console.WriteLine("3掷了{0}次", num3);
            //Console.WriteLine("4掷了{0}次", num4);
            //Console.WriteLine("5掷了{0}次", num5);
            //Console.WriteLine("6掷了{0}次", num6);


            //// 一个控制台应用程序,要求用户输入5个大写字母，如果用户输入的信息不满足要求，提示帮助信息并要求重新输入
            //int index = 0;  //计数器
            //while (true)
            //{
            //    char c = char.Parse(Console.ReadLine());
            //    if (c >= 'A' && c <= 'Z')
            //    {//证明c是大写字母
            //        index++;
            //    }
            //    else // 不是大写字母，重新输入
            //    {
            //        index = 0;
            //        Console.WriteLine("你输入的这个字符不是大写的字母，你要重新再输入5个");
            //    }

            //    if (index == 5)
            //    {
            //        Console.WriteLine("输入合格，通过");
            //        // ..
            //        break;
            //    }
            //}

            // 1000以内的完数 6 = 1 + 2 + 3
            //int sum = 0;
            //for (int num = 1; num <= 1000; num++)
            //{
            //    for (int j = 1; j < num; j++)
            //    {
            //        if (num % j == 0)
            //        {
            //            sum += j;
            //        }
            //    }
            //    if (sum == num)
            //    {
            //        Console.WriteLine(num);
            //        sum = 0;
            //    }
            //    else
            //    {
            //        sum = 0;
            //    }
            //}

            //// 找出100到999之间的水仙花数；”153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3"
            //int ge = 0;
            //int shi = 0;
            //int bai = 0;
            //for (int i = 100; i <= 999; i++)
            //{
            //    ge = i % 10;
            //    bai = i / 100;
            //    shi = (i - bai * 100) / 10;
            //    if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i)
            //    {
            //        Console.WriteLine(i);
            //    }
            //}

            //// 3个可乐瓶可以换一瓶可乐，现在有364瓶可乐。
            //// 问一共可以喝多少瓶可乐，剩下几个空瓶！
            //int numNow = 364;           // 现在的可乐
            //int numEmpty;               // 喝完后的空瓶
            //int numEmptyDuiHuan;        // 空瓶兑换的可乐数量
            //int numEmptyShengYu;        // 空兑换完之后不足3瓶的总数量
            //int sum = 0;                // 一共能够喝的可乐           
            //// 进入while之前已经喝了一次
            //sum = numNow;
            //numEmpty = 364;
            //while (numEmpty >= 3)
            //{
            //    // 空瓶兑换可乐的数量
            //    numEmptyDuiHuan = numEmpty / 3;
            //    // 兑换完毕之后剩余空瓶的数量，不满3平的数量
            //    numEmptyShengYu = numEmpty % 3;
            //    // 兑换完毕之后，喝到的可乐的总量
            //    sum += numEmptyDuiHuan;
            //    // 现在的空瓶数量 = 兑换的可乐数量 + 兑换后不满3平的数量
            //    numEmpty = numEmptyDuiHuan + numEmptyShengYu;
            //}
            //Console.WriteLine(sum);
            //Console.WriteLine(numEmpty);

            /*
            编写一个应用程序用来输入的字符串进行加密，对于字母字符串加密规则如下：
            ‘a’→’d’ ‘b’→’e’ ‘w’→’z’ ⋯⋯ ‘x’→’a’ ‘y’→’b’ ‘z’→’c’
            ‘A’→’D’ ‘B’→’E’ ‘W’→’Z’ ⋯⋯ ‘X’→’A’ ‘Y’→’B’ ‘Z’→’C’
            对于其他字符，不进行加密
            */

            //int num = 1;
            //for (int i = 10; i > 1; i--)
            //{
            //    num = (num + 1) * 2;
            //}
            //Console.WriteLine(num);

            ////输入两个正整数m和n，默认m > n,求其最大公约数和最小公倍数。（辗转相除）
            //int m = int.Parse(Console.ReadLine());
            //int n = int.Parse(Console.ReadLine());
            //int temppp = m * n;
            //// m = 9, n = 6
            //// 辗转相除法---最大公约数
            //int temp = 0;
            //while ((temp = (m % n)) != 0)
            //{
            //    m = n;
            //    n = temp;
            //}
            //Console.WriteLine(n);

            //int zXGBSH = temppp / n;
            //Console.WriteLine(zXGBSH);

            // 编一个程序，解决百钱买百鸡问题。某人有100元钱，要买100只鸡。公鸡5元钱一只，母鸡3元钱一只，小鸡一元钱3只。
            // 问可买到公鸡，母鸡，小鸡各为多少只。把所有的可能性打印出来
            //int numG;
            //int numM;
            //int numX;
            //for (int i = 0; i <= 100; i++)
            //{
            //    for (int j = 0; j <= 100; j++)
            //    {
            //        for (int k = 0; k <= 100; k++)
            //        {
            //            if (5 * i + 3 * j + k / 3 == 100 && i + j + k == 100 && k % 3 == 0)
            //            {
            //                Console.WriteLine("{0}\t{1}\t{2}", i, j, k);
            //            }
            //        }
            //    }
            //}

            Console.WriteLine("输入0，程序结束");
            while (true)
            {
                int n = int.Parse(Console.ReadLine());
                if (n == 0)
                {
                    Console.WriteLine("程序结束");
                    break;
                }
                // 行数
                //for (int i = 1; i <= n; i++)
                //{
                //    // *个数
                //    for (int j = n - i + 1; j >= 1; j--)
                //    {
                //        Console.Write("*");
                //    }
                //    Console.WriteLine();
                //}


                //for (int i = 1; i <= n; i++)
                //{
                //    // 空格的个数
                //    for (int j = n - i; j >= 0; j--)
                //    {
                //        Console.Write(" ");
                //    }
                //    // *个数
                //    for (int k = 1; k <= i; k++)
                //    {
                //        Console.Write("*");
                //    }
                //    Console.WriteLine();
                //}


                //for (int i = 1; i <= n; i++)
                //{
                //    // 空格的个数
                //    for (int j = 1; j <= i - 1; j++)
                //    {
                //        Console.Write(" ");
                //    }
                //    // *个数
                //    for (int k = n - i + 1; k >= 1; k--)
                //    {
                //        Console.Write("*");
                //    }
                //    Console.WriteLine();
                //}


                //for (int i = 1; i <= n; i++)
                //{
                //    //kongge
                //    for (int j = n - i - 1; j >= 0; j--)
                //    {
                //        Console.Write(" ");
                //    }
                //    //*
                //    for (int k = 1; k <= 2 * i - 1; k++)
                //    {
                //        Console.Write("*");
                //    }
                //    Console.WriteLine();
                //}



                //for (int i = 1; i <= n; i++)
                //{
                //    //kongge
                //    for (int j = n - i - 1; j >= 0; j--)
                //    {
                //        Console.Write(" ");
                //    }
                //    //*
                //    for (int k = 1; k <= 2 * i - 1; k++)
                //    {
                //        Console.Write("*");
                //    }
                //    Console.WriteLine();
                //}
                //for (int i = 1; i <= n - 1; i++)
                //{
                //    for (int j = 1; j <= i; j++)
                //    {
                //        Console.Write(" ");
                //    }
                //    for (int k = 2 * (n - i) - 1; k >= 1; k--)
                //    {
                //        Console.Write("*");
                //    }
                //    Console.WriteLine();
                //}


                // 行数
                for (int i = 1; i <= n; i++)
                {
                    // 空格
                    for (int j = n - i - 1; j >= 0; j--)
                    {
                        Console.Write(" ");
                    }
                    Console.Write("*");
                    // 空格
                    for (int k = 0; k < 2 * i - 3; k++)
                    {
                        Console.Write(" ");
                    }
                    if (i >= 2)
                    {
                        Console.Write("*");
                    }
                    Console.WriteLine();
                }
                // 行数
                for (int i = 1; i <= n - 1; i++)
                {
                    // 空格
                    for (int j = 1; j <= i; j++)
                    {
                        Console.Write(" ");
                    }
                    Console.Write("*");

                    // 空格
                    for (int k = 2 * (n - i) - 3; k >= 1; k--)
                    {
                        Console.Write(" ");
                    }
                    if (i != n - 1)
                    {
                        Console.Write("*");
                    }
                    Console.WriteLine();
                }

            }


        }
    }
}
